Virtual machines are commonly used by individuals, businesses, organizations, and other entities. A virtual machine is a self-contained, isolated software environment that runs its own operating system(s) and applications as if it were a physical computer. A virtual machine behaves like a physical computer, but comprises software components. Several virtual machines can all execute on the same physical computer. A physical computer includes one or more processors, computer readable media (e.g., memory), storage devices, input/output devices, etc.
A virtual machine comprises a collection of files, with the exact number being dependent upon the nature of the virtualization product being used. Irrespective of the virtualization product being used, all virtual machines have a file known as the “virtual machine storage file.” As an example, with VMWARE® products, this is commonly referred to as a VMDK file. With MICROSOFT® and CITRIX® products, this is instead referred to as a VHD file. These specific references to VMDK and VHD files are made only in the interest of clarity. One skilled in the art would recognize that other file types may also be used.
A single virtual machine may have more than one virtual machine storage file associated with it. A virtual machine storage file typically comprises at least one volume with a file system within it.
Some virtual machine storage files contain not just a guest file system, but also an operating system, referred to as the guest operating system. For example, a virtual machine running MICROSOFT EXCHANGE SERVER may have two virtual machine storage files—one containing a WINDOWS operating system plus MICROSOFT EXCHANGE software and a second one containing data for MICROSOFT EXCHANGE. The references to specific products made herein are simply in the interests of clarity.
System administrators sometimes need to copy virtual machine storage files from one location to another. Some illustrative, but by no means comprehensive set of examples are provided for clarification purposes. Virtualization enables easier load balancing, and load balancing requires moving a virtual machine from one physical host system to another. Virtual machine storage files are sometimes needed to be copied when virtual machine management software establishes a library, with the means to check virtual machines into the library, and check out virtual machines from the library. Each check in and checkout operation leads to copying of virtual machine storage files.
Programs and tools exist to copy files from one location to another. Some periodically create checkpoints and allow for the copy operation to be resumed from the checkpoint in case a previous copy operation was not completed. This feature is highly useful when copying large files across significant geographic distances. Some file-copy programs tune the size of the I/O to the state of the connection between the source and destination of the copy operation.